package com.xqc.rabbit.work;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.xqc.rabbit.ConnectionUtils;
import com.rabbitmq.client.AMQP.BasicProperties;

/**
* @author 作者 Gavin.Dai/SNSSZ00036
* @dateTime 创建时间：2020年8月11日 下午2:05:39
* @version V1.0.0
* 类说明
*/
public class WorkConsome1 {

	public static void main(String[] args) throws IOException, TimeoutException {
		Connection conn = ConnectionUtils.getConn();
		Channel channel = conn.createChannel();
		channel.queueDeclare(WorkProduct.WORK_QUEUE, true, false, false, null);
		//handleDelivery父类没有实现，需要自己写
		DefaultConsumer defaultConsumer = new DefaultConsumer(channel){
			@Override
			public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
					throws IOException {
				System.out.println("消费消息："+new String(body, "UTF-8"));
			}
		};
		//声明消费者队列
		//true:表示自动确认，只要消息从队列中获取，无论消费者获取到消息后是否成功消费，都会认为消息已经成功消费
        //false:表示手动确认，消费者获取消息后，服务器会将该消息标记为不可用状态，等待消费者的反馈，
       // 如果消费者一直没有反馈，那么该消息将一直处于不可用状态，并且服务器会认为该消费者已经挂掉，不会再给其
        //发送消息，直到该消费者反馈。
		channel.basicConsume(WorkProduct.WORK_QUEUE, true,defaultConsumer);
	}
}
